package main

import (
	"demo/dao"
	"demo/model"
	"demo/routers"
	"demo/setting"
	"fmt"
	"os"
)

func main() {
	var config = "conf/config.ini"
	if len(os.Args) < 2 {
		fmt.Println("启动未指定配置文件，默认为：conf/config.ini")
	} else {
		config = os.Args[1]
		fmt.Println("启动指定配置文件：" + os.Args[1])
	}

	// 加载配置文件
	if err := setting.Init(config); err != nil {
		fmt.Printf("load config from file failed, err:%v\n", err)
		return
	}
	fmt.Println("加载配置文件完成")
	// 创建数据库
	// sql: CREATE DATABASE bubble;
	// 连接数据库
	err := dao.InitMySQL(setting.Conf.MySQLConfig)
	if err != nil {
		fmt.Printf("init mysql failed, err:%v\n", err)
		return
	}
	defer dao.Close() // 程序退出关闭数据库连接
	fmt.Println("连接数据库完成")
	// 模型绑定
	dao.DB.AutoMigrate(&model.User{})
	// 注册路由
	r := routers.SetupRouter()
	if err := r.Run(fmt.Sprintf(":%d", setting.Conf.Port)); err != nil {
		fmt.Printf("server startup failed, err:%v\n", err)
	}
	fmt.Println("启动完成")
}
